package com.scg33.inicio;

import java.util.Date;
import java.util.Hashtable;

import org.zkoss.bind.annotation.AfterCompose;
import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Init;
import org.zkoss.zk.ui.Execution;
import org.zkoss.zk.ui.Executions;

import com.coreweb.domain.Domain;
import com.coreweb.util.Misc;
import com.scg33.dominio.RegisterDomain;

public class VMGenerico {

	public Misc m = new Misc();
	
	static String MENU = "";
	static String PA_HOME = "./home.zul";
	static String PA_ERROR = "./error.zul";
	static String PA_WEB = "./web.zul";
	static String PA_CONTENIDO = "./contenido.zul";

	/**
	 * Que página se muestra si no encuentra el ID que busca
	 * Re implemmentar en cada clase
	 */
	public String getPaginaDefault(){
		return PA_ERROR;
	}
	

	/**
	 * Carga las páginas de un arreglo, y las pone estática.
	 * Se llama la primera vez y listo. Cada clase implemnenta el 
	 * método stático que llama a este.
	 * @param pas
	 * @param map
	 */
	static synchronized void cargaPaginas(String[][] pas, Hashtable<String, String[]> map){
		for (int i = 0; i < pas.length; i++) {
			String[] p = pas[i];
			map.put(p[0], p);
		}
	}

	/**
	 * Dado el arreglo de páginas y el aid, busca cual se corresponde, sino lo encuentra, 
	 * llama al por default
	 * Ussado en los ini
	 * @param mapping
	 * @param id
	 * @return
	 */
	String getPaginaParametro(Hashtable<String, String[]> mapping, String id){
		String out = "";
		Execution e = Executions.getCurrent();
        String p = Executions.getCurrent().getParameter(id);
        out = this.getPagina(mapping, p);
        if (out == null){
        	out  = this.getPaginaDefault();
        }
		return out;
	}

	
	
	
	/**
	 * Es el que busca la página que corresponde
	 * @param map
	 * @param id
	 * @return
	 */
	public String getPagina(Hashtable<String, String[]> map, String id) {
		String s = "";
		if (id == null) {
			s = null;
		} else {
			String[] sa = map.get(id);
			if (sa == null) {
				s = null;
				System.out.println("............. ERROR: pagína (" + id + ")");
			} else {
				s = sa[1];
			}
		}
		return s;
	}

	public String getLinkSelected(Object idP){
		String out = "";
		String p = Executions.getCurrent().getParameter("id");
		String xx = idP+"";
		if (xx.trim().compareTo(p)==0){
			out = "current";
		}
		return out;
	}
	
	
	@Init(superclass = true)
	public void initGenericViewModel() {
	}

	@AfterCompose(superclass = true)
	public void afterComposeGenericViewModel() {

	}
	
	public String getParserFecha(Date d){
		String out = this.m.dateToString(d, Misc.DD_MM__YYY_HORA_MIN);
		return out;
	}
	
	public void saveDominio(Domain d, String user) throws Exception{
		RegisterDomain rr = RegisterDomain.getInstance();
		rr.saveObject(d, user);	
	}
	
	public void deleteDominio(Domain d) throws Exception{
		RegisterDomain rr = RegisterDomain.getInstance();
		rr.deleteObject(d);		
	}

}
